Przykładowe kolokwium - niestacjonarne
Przykładowe kolokwium - niestacjonarne
Zasady kolokwium
Przebieg
- Kolokwium odbywa się w formie on-line. Czas przeznaczony na rozwiązanie kolokwium to 1 godzina 30 minut. O wyznaczonej godzinie w systemie eKursy zostanie udostępniona treść kolokwium.
- Od momentu udostępnienia treści, przez 1,5 h aktywne będzie zadanie
w systemie eKursy w którym należy umieścić rozwiązanie w formie plików
tekstowych z rozszerzeniem
.cpp/.h/.hpp. - Nie ma preferencji co do organizacji kodu względem podziału na pliki
- zadanie może być przesłane w jednym pliku
.cpplub podzielone na wiele plików w zależności od indywidualnych preferencji/wygody. - Tylko rozwiązania umieszczone w wyznaczonym zadaniu na eKursy będą akceptowane, nie dopuszcza się innych form dostarczenia rozwiązania (wraz z przykładowym kolokwium udostępnione zostało zadanie na eKursy które działa tak samo jak to na właściwym kolokwium - proszę przećwiczyć wgrywanie odpowiedzi).
- Istniej możliwości wielokrotnego wgrywania rozwiązania w ramach limitu czasu. Aby uniknąć sytuacji, gdzie ze względu na np. problemy z połączeniem internetowym w ostatnich minutach nie będziecie Państwo w stanie przesłać kodu, sugeruję okresowe przesyłanie na Moodle cząstkowych rozwiązań, a później ich nadpisywanie.
- Proszę samodzielnie pilnować dostępnego czasu i nie zostawiać przesyłania na ostatnią chwilę - rozwiązania nie przesłane w terminie nie będą przyjmowane.
Ocenianie
- Błędy kompilacji dyskwalifikują z dalszej oceny i skutkują wynikiem 0 pkt.
- Pełna ocena za zadanie zakłada nieużywanie zmiennych globalnych oraz niekopiowanie argumentów tam, gdzie nie jest to konieczne (proszę korzystać z referencji).
- Jeśli w treści są podane nazwy funkcji, klas itd. należy ściśle się ich trzymać.
- Unikaj tworzenia publicznych pól klas, staraj się odpowiednio przygotować interfejs klasy.
- Rozwiązania zostaną poddane kontroli antyplagiatowej - proszę korzystać tylko z kodu swojego autorstwa, jeżeli przygotowują Państwo gotowe fragmenty programów proszę przygotować je samodzielnie, bez pomocy innych.
Kontakt z prowadzącym
W trakcie kolokwium prowadzący dostępny będzie na platformie Zoom, pod tym samym linkiem, pod którym odbywają się standardowe zajęcia. W przypadku wystąpienia problemów technicznych z portalem eKursy lub ewentualnych błędów w treści zadań macie Państwo możliwość natychmiastowego zgłoszenia takiej sytuacji. Logując się proszę użyć pełnego imienia i nazwiska. Prowadzący nie będzie udzielał pomocy w rozwiązaniu kolokwium.
Treść zadania
Do zadania dołączono zestaw tekstur do wykorzystania. Rozpakuj je i umieść folder tekstury w folderze uruchamiania programu (w przypadku Qt Creator będzie to build folder projektu), korzystaj tylko z ścieżek względnych.
Stwórz trzy klasy: Bohater, Potwor oraz
Bagno, dziedziczące po wspólnej klasie
AnimowaneAssety, reprezentującej oteksturowany obiekt.
Zastanów się czy klasa bazowa AnimowaneAssety nie powinna
być klasą pochodną klasy, która już implementuje oczekiwane
funkcjonalności. Korzystając z SFML zaimplementuj następującą
funkcjonalność:
- Dodaj tekstury do stworzonych klas, skorzystaj z dostarczonych tekstur.
- Umieść w lewym dolnym narożniku ekranu obiekt klasy
Bohater. - Umieść na scenie 5 potworów oraz 10 bagien w losowych miejscach (poza lewym dolnym narożnikiem ekranu, wylosuj takie wartości, aby obiekty nie wystawały poza krawędź ekranu), przechowuj wskaźniki do nich w jednej wybranej kolekcji.
- Dodaj do klasy
AnimowaneAssetypola opisujące prędkością pionową i poziomą:- ustaw obie prędkości bohatera na wybrane przez siebie wartości,
- przy tworzeniu obiektu
Potwornadaj mu losową prędkość pionową z zakresu <-200, 200>, - przy tworzeniu obiektu
Bagnonadaj mu losową prędkość poziomą z zakresu <-50, 50>,
- Dodaj do klasy
AnimowaneAssetymetodęCiaglaAnimacja, implementującą animację obiektu z zapisaną w obiekcie prędkością:- wywołuj metodę
CiaglaAnimacjadla obiektów klasPotworiBagno.
- wywołuj metodę
- Rozszerz metodę
CiaglaAnimacjao wykrywanie kolizji z krawędziami ekranu, w przypadku dotknięcia krawędzi, obiekt przenosi się na w pobliże przeciwnego krańca ekranu. - Dodaj do klasy
BohatermetodęUstawCelustawiającą punkt docelowy, do którego ma dotrzeć bohater, zapisz punkt docelowy wewnątrz obiektuBohater. - Dodaj obsługę myszki, kliknięcie punktu ustawia docelowy punkt do którego dąży bohater.
- Dodaj do klasy
BohatermetodęPodazajDoCelu, implementującą animację przemieszczania się bohatera do zadanego punktu z zapisaną w obiekcie prędkością. Bohater porusza się tak długo, aż nie osiągnie celu (bohater nie musi poruszać się po najkrótszej drodze). - Dodaj obsługę klawiatury - wciśnięcie b przesuwa bohatera z powrotem do obszaru startowego (lewy dolny narożnik).
- Dodaj w klasie
Bohaterobsługę żyć (początkowa wartość 3). - Dodaj wykrywanie kolizji bohatera z pozostałymi obiektami
na scenie:
- usuwaj obiekt, z którym wystąpiła kolizja,
- odejmij bohaterowi jedno życie.
- Przerwij grę, jeśli bohater straci wszystkie życia.
Autorzy: Tomasz Mańkowski, Michał Fularz, Jakub Tomczyński